#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author   : chancemate
# @DateTime : 2023/3/31
# @FileName : segmentation
# @SofrWare : PyCharm
# @User     : 彬宇
from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor
import os, json, random, requests, re, datetime, time
import asyncio
import pandas as pd

"""
项目简介：
    1. 利用pandas读取文件数据
    2. 数据进行处理，例如：csv，excel
    3. 数据返回 字典，列表
"""

class Solution:
    def __init__(self, filepath, readlines=5000000, datatype=None):
        """
        初始值
        :param filepath:        文件路径
        :param readlines:       读取最大行数
        :param datatype:        返回数据类型 None->DataFrame.concat, dict->{'':{}...}, list->{'':[]}, records->[{},{}...]
        """
        self.filepath = filepath
        self.readlines = readlines
        self.datatype = datatype

    # 处理csv格式
    def pandas_csv_io(self):
        reader = pd.read_csv(self.filepath, iterator=True, chunksize=self.readlines)
        pandas_data = pd.concat([chunk for chunk in reader])
        if self.datatype == None:return pandas_data
        elif self.datatype == 'dict': return pandas_data.to_dict(self.datatype)
        elif self.datatype == 'list': return pandas_data.to_dict(self.datatype)
        elif self.datatype == 'records': return pandas_data.to_dict(self.datatype)


    # 处理xlsx格式
    def pandas_xlsx_io(self):
        reader = pd.read_excel(self.filepath, iterator=True, chunksize=self.readlines)
        pandas_data = pd.concat([chunk for chunk in reader])
        if self.datatype == None:return pandas_data
        elif self.datatype == 'dict':return pandas_data.to_dict(self.datatype)
        elif self.datatype == 'list':return pandas_data.to_dict(self.datatype)
        elif self.datatype == 'records':return pandas_data.to_dict(self.datatype)

